package it.uiip.crm.view;




import java.util.List;
import java.util.Map;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

/**
 * Classe che si occupa di mostrare i vari messaggi a video.
 * @author Gruppo Terra
 */
public  class  Messaggi {
	/**
	 * Mostra un messaggio.
	 * @param messaggio Messaggio da stampare.
	 */
	public static void mostraMessaggio(String messaggio){
		JOptionPane.showMessageDialog(null, messaggio, "Informazione", JOptionPane.INFORMATION_MESSAGE);
	}
	
	/**
	 * Mostra un messaggio di errore.
	 * @param messaggio Messaggio di errore da stampare.
	 */
	public static void mostraMessaggioErrore(String messaggio){
		JOptionPane.showMessageDialog(null, messaggio, "Avviso", JOptionPane.ERROR_MESSAGE);
	}

	/**
	 * Mostra saluti iniziali e finale.
	 * @param immagine Immagine da mostrare.
	 */
	public static void mostraSaluti(String immagine){
		Icon icon = new ImageIcon("images/" + immagine);
		JOptionPane.showMessageDialog(null, "", "Informazione", JOptionPane.INFORMATION_MESSAGE, icon);
	}

	/**
	 * Mostra una lista.
	 * @param list Lista da mostrare.
	 */
	public static void mostraLista(List list){
		String stringa = "";
		for(Object o:list){
			stringa=stringa + o.toString() + "\n";
		}
		mostraLista(stringa);
	}
	
	/**
	 * Mostra una lista.
	 * @param list Lista da mostrare.
	 */
	public static void mostraLista(String list){
		JTextArea area = new JTextArea();
    	area.setText(list);
    	area.setRows(10);
    	JScrollPane scrollpane = new JScrollPane(area);
    	Object[] array = {
    		new JLabel("Lista Richiesta: "),
    	    scrollpane,
    	};
    	
    	JOptionPane.showMessageDialog(null, array, "Risultato Operazione", JOptionPane.PLAIN_MESSAGE);
	}
	
	/**
	 * Mostra un finestra dove inserire un input.
	 * @param messaggio 		Input inserito.
	 * @return {@link String}	Input da restituire.
	 */
	public static String getInput(String messaggio){
		String stringaInput = JOptionPane.showInputDialog(messaggio);	
		if(stringaInput == null){
			stringaInput="0";
		}
		return stringaInput;
	}
	
	
	public static String[] uiLogin() {
		String risposta[]=new String[2];
		try {
			Object[] message=new Object[4];
			message[0] = "email: ";
			message[1] = new JTextField("");
			message[2] = "password: ";
			message[3] = new JPasswordField("");
			String[] options={"OK","ANNULLA"};
			int scelta = JOptionPane.showOptionDialog(null, message, "Autenticazione", JOptionPane.DEFAULT_OPTION,
					JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
			risposta[0]=((JTextField)message[1]).getText();
		    risposta[1]=((JPasswordField)message[3]).getText();
			return risposta;
			
		} catch(Exception ex) {
			Messaggi.mostraMessaggioErrore(ex.getMessage());
			return null;
		}
	}	
	
	public static Map<String, String> getSceltaByMap(Map<String, String> map) {
		try{
			
			Object[] message=new Object[map.size()*2];
			int i=0;
			for(Map.Entry<String, String> ent: map.entrySet()){
			
				
				message[i++] = ent.getKey();
				message[i++] = new JTextField(ent.getValue());
			}	
			String[] options={"OK","ANNULLA"};
			
			int scelta = JOptionPane.showOptionDialog(null, message, "Autenticazione", JOptionPane.DEFAULT_OPTION,
						JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
			if(scelta==JOptionPane.CANCEL_OPTION) return null;
			
			for(int t=0; t<message.length; t=t+2){
				
				map.put((String)message[t], ((JTextField)message[t+1]).getText());
			}	
			return map;
			
		} catch(Exception ex) {
			ex.printStackTrace();
			Messaggi.mostraMessaggioErrore(ex.getMessage());
			return null;
		}
	}	
	
	
	/**
	 * Operazione di eliminazione di un cliente.
	 */
	public static Object scegliDaLista(String message, List lista) {
				
		try{
				Object s = JOptionPane.showInputDialog(null,message,
						message,JOptionPane.PLAIN_MESSAGE,null,lista.toArray(), lista.toArray()[0]);
				if(s==null) return null;
				return s;
			
		} catch(Exception ex) {
			Messaggi.mostraMessaggioErrore(ex.getMessage());
			ex.printStackTrace();
			return null;
		}
	}

	
}
